#include	"unp.h"

int debugFlag = 0;

void str_cli(FILE *fp, int sockfd) {
	int maxfdp1, stdineof;
	fd_set rset;
	char buf[MAXLINE];
	int n;

	stdineof = 0;
	FD_ZERO(&rset);

	for (;;) {
		if (stdineof == 0)
			FD_SET(fileno(fp), &rset);
		FD_SET(sockfd, &rset);
		maxfdp1 = max(fileno(fp), sockfd) + 1;
		Select(maxfdp1, &rset, NULL, NULL, NULL);

		if (FD_ISSET(sockfd, &rset)) { /* socket is readable */
			if ((n = Read(sockfd, buf, MAXLINE)) == 0) {
				if (stdineof == 1)
					return; /* normal termination */
				else
					//err_quit("str_cli: server terminated prematurely");
					exit(1);
			}

			receiveMsg(debugFlag, buf);
//			Write(fileno(stdout), buf, n);
		}

		if (FD_ISSET(fileno(fp), &rset)) { /* input is readable */
			if ((n = Fgets(buf, MAXLINE, stdin)) == 0) {
				stdineof = 1;
				Shutdown(sockfd, SHUT_WR); /* send FIN */
				FD_CLR(fileno(fp), &rset);
				continue;
			}

			buf[strlen(buf) - 1] = '\0';
			debugFlag = clientCommand(sockfd, buf);
			memset(buf, 0x00, strlen(buf));
			//Writen(sockfd, buf, n);
		}
	}
}
